﻿#region Header

/*
Remote views based on linq
By

Pascal Hauser 
Dipl. Ing. in Informatik, Hochschule für Technik Rapperswil, 2006
Master Thesis, Hochschule für Technik Rapperswil, 2008-2010

and

Raphael Gfeller
Dipl. Ing. in Informatik, Hochschule für Technik Rapperswil, 2006
Master Thesis, Hochschule für Technik Rapperswil, 2008-2010

*/

#endregion

#region Usings

using System;
using System.Collections.Generic;

#endregion

namespace Sebastof.Services.Interfaces {
	/// <summary>
	/// Is responsible for
	/// - returning a flat view over an given object tree
	/// - whereas the returned entries are replaceable
	/// </summary>
	public interface IObjectTreeFlattenerService {
		#region Public Methods

		/// <summary>
		/// Returns a flatt view over an given object tree
		/// </summary>
		/// <param name="objectToFlatten"></param>
		/// <returns></returns>
		IList<IFlattenTreeObjectEntry> GetFlattenTree(object objectToFlatten);

		#endregion
	}

	#region Public Classes

	public interface IFlattenTreeObjectEntry {
		object ObjectTreeEntry { get; }
		void ReplaceValueOnTreeBy(Object newValue);
	}

	#endregion
}